--优惠券ID
local voucherId=ARGV[1]

--用户Id
local userId = ARGV[2]

--订单Id
local orderId = ARGV[3]
--数据key
    --库存
    local stockKey = 'seckillVoucher:stock:' .. voucherId
    --订单
    local orderKey = 'seckillVoucher:order:' .. voucherId

--判断库存
if (tonumber(redis.call('get', stockKey))<=0) then
    --库存不足
    return 1
end

--判断用户是否下单
if(redis.call('sismember',orderKey,userId)==1) then
    --说明是重复下单
    return 2
end

--扣库存
redis.call('incrby',stockKey,-1)
--添加用户Id
redis.call('sadd',orderKey,userId)
--发送到消息队列
redis.call('xadd','stream.orders','*','userId',userId,'voucherId',voucherId,'id',orderId)
return 0
